diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-12-12 18:50:03 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-12-12 18:50:03 +0100 |
| commit | 85c4c42bd601270d7be0f34a0767a34bb85e29bb (patch) | |
| tree | 16a07a89cf209139672592fd6988f0c028acb7e9 /src/pages/sujet/[slug].tsx | |
| parent | 93f87c10783e3d76f1dec667779aedffcae33a39 (diff) | |
refactor(hooks): rewrite useBreadcrumbs hook
* use next/router to get the slug instead of using props
* handle cases where the current page title is not provided
* update JSON-LD schema to match the example in documentation
* add tests
Diffstat (limited to 'src/pages/sujet/[slug].tsx')
| -rw-r--r-- | src/pages/sujet/[slug].tsx | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/pages/sujet/[slug].tsx b/src/pages/sujet/[slug].tsx index 43b5aa6..9d42644 100644 --- a/src/pages/sujet/[slug].tsx +++ b/src/pages/sujet/[slug].tsx @@ -34,7 +34,6 @@ import type { WPTopicPreview, } from '../../types'; import { CONFIG } from '../../utils/config'; -import { ROUTES } from '../../utils/constants'; import { getLinksItemData, getPostsWithUrl, @@ -45,7 +44,7 @@ import { } from '../../utils/helpers'; import { loadTranslation, type Messages } from '../../utils/helpers/server'; import { - useBreadcrumb, + useBreadcrumbs, useHeadingsTree, useTopic, useTopicsList, @@ -71,10 +70,9 @@ const TopicPage: NextPageWithLayout<TopicPageProps> = ({ data }) => { fallback: data.otherTopics, input: { first: data.totalTopics, where: { notIn: [topic.id] } }, }); - const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumb({ - title: topic.title, - url: `${ROUTES.TOPICS}/${topic.slug}`, - }); + const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumbs( + topic.title + ); const { ref, tree } = useHeadingsTree<HTMLDivElement>({ fromLevel: 2 }); if (isFallback || isLoading) return <LoadingPage />; @@ -106,7 +104,11 @@ const TopicPage: NextPageWithLayout<TopicPageProps> = ({ data }) => { slug, title, }); - const schemaJsonLd = getSchemaJson([webpageSchema, articleSchema]); + const schemaJsonLd = getSchemaJson([ + webpageSchema, + articleSchema, + breadcrumbSchema, + ]); const messages = { widgets: { @@ -163,12 +165,6 @@ const TopicPage: NextPageWithLayout<TopicPageProps> = ({ data }) => { // eslint-disable-next-line react/no-danger -- Necessary for schema dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }} /> - <Script - dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbSchema) }} - // eslint-disable-next-line react/jsx-no-literals -- Id allowed - id="schema-breadcrumb" - type="application/ld+json" - /> <PageHeader heading={ <> |
